package com.hqyj.javaSpringBoot.listener;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.File;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

/**
 * 删除 /log 下非当日日志监听器
 */
@WebListener
public class LogDestroyListener implements ServletContextListener {

    private final static Logger LOGGER = LoggerFactory.getLogger(LogDestroyListener.class);
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        LOGGER.debug("==== Init Context ====");

        // 找到 /log 文件夹，判断文件夹是否存在，若不存在不进行下一步操作
        File destFolder = new File("/log");
        if (destFolder == null || !destFolder.exists()) {
            return;
        }

        // 获得日期格式化字符串
        // DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        String currentDate = dtf.format(LocalDateTime.now());

        // 获得目标文件夹下的文件列表，并获取每个的名字
        // 判断文件名字是否包含当前日期的字符串，没有则删除
        File[] files = destFolder.listFiles();
        for (File file : files) {
            String fileName = file.getName();
            //如果日志时间不是当天的日期，则删除
            if (!fileName.contains(currentDate)) {
                file.delete();
            }
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        LOGGER.debug("==== Destroy Context ====");
    }
}
